package com.luo.chengrui.module.crbpm.service.orgprocess;

import java.util.*;
import javax.validation.*;

import com.luo.chengrui.module.crbpm.controller.admin.definition.vo.process.BpmProcessDefinitionPageItemRespVO;
import com.luo.chengrui.module.crbpm.controller.admin.orgprocess.vo.*;
import com.luo.chengrui.module.crbpm.dal.dataobject.orgprocess.BpmOrgProcessDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 组织模板明细 Service 接口
 *
 * @author luodz
 */
public interface BpmOrgProcessService {

    /**
     * 创建组织模板明细
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createBpmOrgProcess(@Valid BpmOrgProcessCreateReqVO createReqVO);

    /**
     * 更新组织模板明细
     *
     * @param updateReqVO 更新信息
     */
    void updateBpmOrgProcess(@Valid BpmOrgProcessUpdateReqVO updateReqVO);

    /**
     * 删除组织模板明细
     *
     * @param id 编号
     */
    void deleteBpmOrgProcess(String id);

    /**
     * 获得组织模板明细
     *
     * @param id 编号
     * @return 组织模板明细
     */
    BpmOrgProcessDO getBpmOrgProcess(String id);

    /**
     * 获得组织模板明细列表
     *
     * @param ids 编号
     * @return 组织模板明细列表
     */
    List<BpmOrgProcessDO> getBpmOrgProcessList(Collection<String> ids);

    /**
     * 获得组织模板明细分页
     *
     * @param pageReqVO 分页查询
     * @return 组织模板明细分页
     */
    PageResult<BpmOrgProcessDO> getBpmOrgProcessPage(BpmOrgProcessPageReqVO pageReqVO);

    /**
     * 获得组织模板明细列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 组织模板明细列表
     */
    List<BpmOrgProcessDO> getBpmOrgProcessList(BpmOrgProcessExportReqVO exportReqVO);

    void batchCreateBpmOrgProcess(List<BpmOrgProcessCreateReqVO> createReqVO);

    /**
     * 转换对象
     * @param list
     * @return
     */
    List<BpmOrgProcessRespVO> convertTo(List<BpmOrgProcessDO> list);
}
